What it does.
- Serves MP3 audio to multiple listeners using the de-facto
"ShoutCast" protocol over standard TCP sockets. The number of
simultaneous listeners is primarily limited only by network
bandwidth.
- Serves multiple "radio stations" on different ports
simultaneously.
- Supports ordered or shuffle play of audio tracks.
- Allows MP3 files to be added and removed from a station on the
fly, without restarting the server.
- Can easily be extended (by writing new Java classes) to
acquire MP3 data from any source, and order the playlist in any
sequence.
- Generates customizable HTML files giving info on the current
track and recent tracks; these can be served via any HTTP server
(such as Apple's Web Sharing) on the same computer.
What it doesn't do (yet).
It's early days. Compared to mature servers like ShoutCast
and IceCast, RadioStation isn't
very fancy ... yet. It doesn't do things like:
- Any kind of GUI-based setup and administration, whether
web-based or via a local app. (The absence of this really pains
my heart since I implement AWT for my day job, and I promise it's
a high priority! I don't like editing cryptic configuration files
any better than you do.)
- Cross-fading between tracks -- this requires decoding the
tracks, mixing the audio, and re-encoding, and RadioStation
doesn't do any encoding. It just shovels pre-encoded data from
your hard disk to the network. (I don't plan on adding MP3
encoding myself; I don't know if Java
is ready for it yet. Maybe someone else will take this
as a challenge.)
- Streaming audio in other formats like AIFF or WAV -- again,
this would require doing MP3 encoding.
- Matching the bit-rates of all files -- once again, this
requires re-encoding.
- Support variable-bit-rate files. The bandwidth-management code
assumes the whole file has the same bitrate. But most MP3 players
don't support VBR streams anyway.